/**
 * ***************************************************************************** Copyright (c) 2000,
 * 2008 IBM Corporation and others. All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0 which accompanies this
 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * <p>Contributors: IBM Corporation - initial API and implementation
 * *****************************************************************************
 */
package org.eclipse.ltk.core.refactoring;

/**
 * A <code>RefactoringStatusContext</code> can be used to annotate a {@link RefactoringStatusEntry}
 * with additional information typically presented in the user interface.
 *
 * <p>To present a context in the user interface a corresponding context viewer can be registered
 * via the extension point <code>
 * org.eclipse.ltk.ui.refactoring.statusContextViewers</code>.
 *
 * <p>This class may be subclassed by clients.
 *
 * @since 3.0
 */
public abstract class RefactoringStatusContext {
  /**
   * Returns the element that corresponds directly to this context, or <code>null</code> if there is
   * no corresponding element.
   *
   * <p>For example, the corresponding element of a context for a problem detected in an <code>
   * IResource</code> would be the resource itself.
   *
   * <p>
   *
   * @return the corresponding element
   */
  public abstract Object getCorrespondingElement();

  /*
   * @see java.lang.Object#toString()
   */
  public String toString() {
    Object element = getCorrespondingElement();
    return element == null ? null : element.toString();
  }
}
